57d30ead16611bed824d1fe10da79a5a02fb32ac,bundles/extensions/models/impl/src/main/java/org/apache/sling/models/impl/ModelAdapterFactory.java,ModelAdapterFactory,setField,#InjectableField#Object#Object#Result#,714

Before Change


    }

    private boolean setField(InjectableField injectableField, Object createdObject, Object value, Result<?> result) {
        if (value != null) {
            Field field = injectableField.getField();
            value = adaptIfNecessary(value, field.getType(), field.getGenericType(), result);
            // value may now be null due to the adaptation done above
            if (value == null) {
                return false;
            }
            boolean accessible = field.isAccessible();
            try {
                if (!accessible) {
                    field.setAccessible(true);
                }
                field.set(createdObject, value);
                return true;
            } catch (Exception e) {
                log.error("unable to inject field", e);
                return false;
            } finally {
                if (!accessible) {
                    field.setAccessible(false);
                }
            }
        } else {
            return false;
        }
    }

After Change



    private RuntimeException setField(InjectableField injectableField, Object createdObject, Object value) {
        Field field = injectableField.getField();
        Result<Object> result = adaptIfNecessary(value, field.getType(), field.getGenericType());
        if (result.wasSuccessfull()) {
            boolean accessible = field.isAccessible();
            try {
                if (!accessible) {
                    field.setAccessible(true);
                }
                field.set(createdObject, result.getValue());
            } catch (Exception e) {
                return new ModelClassException("Could not inject field due to reflection issues", e);
            } finally {
                if (!accessible) {
                    field.setAccessible(false);
                }
            }
            return null;
        } else {
            return result.getThrowable();
        }
    }